撰寫 Swift 的時候,型別是非常重要的東西
//宣告一個整數變數(標注方式)
var a : Int = 123
//宣告一個字串常數(標注方式)
let c : String = "你好哇"
//or(無標註方式)
var a = 123
let c = "你好哇"
通常很少需要型別標注,如果宣告時給了一個初始值,Swift則會自動判斷出型別。
var a = 123
let b = -123
還有一個特殊的無符號整數型別為UInt,這個型別的長度與目前平台的原生字長相同。
//宣告浮點數時,如果沒有型別標注,通常會將他判斷為Double
var a = 162.25
let b : float = 175.5
浮點數(Float、Double)指的是包含小數點的數字,Float和Double的差別在於精確。
Float有6位數,Double可以達到15位數。
兩個變數相加需要轉換相同的型別,否則程式就會出錯。
相反來說也行,但小數點後面的數字就會被截斷。
var a = true
let b = false
布林值(bool)指的是邏輯上的值,只能為真或假。
//宣告字串時,不論字數多少,都會判斷為String
let a = "hello"
//除非型別特別標注為Character
let a : Character= "h"
如果要在字串中加入其他變數或常數,要使用()的方式,如下:
元組(tuple)是將多個值組合成一個複合值,其內的型別可以不同,以一對小括號()前後包起來,每個值以逗號,分隔,如下:
//宣告一個元組並填值進去
let a = ("Gary",20,174.99)
要使用其中一個值,可以依照順序的索引值(索引由0算起)取得,如下:
也可以將一個位元組分解成單獨的常數或變數,如下:
如果只需要其中某些值時,分解時可以把不需要的用底線 _ 標記,如下:
或是在宣告元組時就各別給裡面的值一個名稱也可以,如下:
型別別名(type aliases)就是給已存在的型別定義另一個名字,必須使用關鍵字typealias來定義型別別名。
//將Int型別定義一個新的名字num
typealias num = Int
//這邊宣告的型別num,也就是Int
var a : num = 123
讓變數或常數可以有沒有值的情況,這與零0或是空字串""不同,當沒有值時,變數或常數會返回nil。而nil代表的就是沒有值,任何型別只要有加上可選型別(optional type)都可以設置成nil。使用方法為在型別標註後面加上一個問號?,如下:
//在宣告變數時,型別後面加上?,就是沒有值的狀態
var a : Int?
//若原本有設值,之後再將變數給nil,那就會變成沒有值的狀態
a = 100
a = nil
若字串轉數值類型別,中間有字元的情況下,他也會輸出來避免發生錯誤
當你確認一個可選型別一定有值,則可以在這個變數後面加上一個驚嘆號!例子如下:
//宣告一個常數整數並給值
let a : Int? = 1
//以這個例子來說,常數確實有值
//所以加上驚嘆號,表示這個可選型別有值,可以直接使用
print(a!)
//若沒有值的情況仍要使用,則會報錯
//let a : Int?
//print(a!)
當可選型別第一次被指派值後,如果可以確定他之後都會有值,這時可以將其改為隱式解析可選型別(implicitly unwrapped optional),這樣便不需要每次都判斷及解析,如下說明:
//可選型別
let a : String? = "abcd"
//需要驚嘆號來取值
let b : String = a!
//如果改成隱式解析可選型別,則可直接使用,不用加上驚嘆號
let c : String! = "cdefg"
let d : String = c